<?php

// PHP雪里开轻量级报修系统 V1.0Beta
// 演示地址: http://baoxiu.chalide.cn
// 更新关注: /weivote
// 文件路径: stu/bxiu.php
// 文件大小: 6537 字节
// 最后修改时间: 2025-05-21 16:20:52
// 作者: yujianyue
// 邮件: 15058593138@qq.com
// 版权所有,保留发行权和署名权

/**
 * 本文件功能：学生提交报修
 * 版权声明：保留发行权和署名权
 * 作者信息：功能反馈:15058593138@qq.com(手机号同微信)
 */

// 处理AJAX请求
if (isset($_GET['act'])) {
    switch ($_GET['act']) {
        case 'save':
            // 获取表单数据
            $title = isset($_POST['title']) ? trim($_POST['title']) : '';
            $location = isset($_POST['location']) ? trim($_POST['location']) : '';
            $description = isset($_POST['description']) ? trim($_POST['description']) : '';
            $images_json = isset($_POST['images_json']) ? trim($_POST['images_json']) : '';
            
            // 验证数据
            if (empty($title)) {
                json_error('请输入报修标题');
            }
            
            if (empty($location)) {
                json_error('请输入报修位置');
            }
            
            if (empty($description)) {
                json_error('请输入报修描述');
            }
            
            // 解析图片JSON
            $images = !empty($images_json) ? json_decode($images_json, true) : [];
            
            // 准备数据
            $data = [
                'title' => $title,
                'location' => $location,
                'description' => $description,
                'images' => !empty($images) ? json_encode($images, JSON_UNESCAPED_UNICODE) : null,
                'user_id' => $_SESSION['user_id'],
                'status' => '未处理',
                'create_time' => date('Y-m-d H:i:s')
            ];
            
            // 插入数据
            $result = $db->insert('bxiu', $data);
            
            if ($result) {
                json_success('报修提交成功', ['id' => $result]);
            } else {
                json_error('报修提交失败: ' . $mysqli->error);
            }
            break;
    }
    exit;
}
// 包含头部
include './inc/head.php';
?>

<div class="page-header">
    <h2 class="page-title">提交报修</h2>
</div>

<div class="card">
    <div class="card-body">
        <form id="repairForm">
            <div class="form-group">
                <label class="form-label" for="title">报修标题</label>
                <input type="text" class="form-control" id="title" name="title" placeholder="请简要描述问题" required>
            </div>
            
            <div class="form-group">
                <label class="form-label" for="location">报修位置</label>
                <input type="text" class="form-control" id="location" name="location" placeholder="请输入详细位置" required>
            </div>
            
            <div class="form-group">
                <label class="form-label" for="description">详细描述</label>
                <textarea class="form-control" id="description" name="description" rows="5" placeholder="请详细描述问题，以便维修人员了解情况" required></textarea>
            </div>
            
            <div class="form-group">
                <label class="form-label">图片上传（最多5张）</label>
                <input type="file" class="form-control" id="imageUpload" accept="image/*" multiple>
                <small class="form-text text-muted">支持jpg、png、gif格式，单张图片不超过<?php echo MAX_UPLOAD_SIZE; ?>MB</small>
                <div id="imagePreview" class="image-preview"></div>
                <input type="hidden" id="images_json" name="images_json">
            </div>
            
            <div class="form-group">
                <button type="button" class="btn btn-primary" id="submitBtn">提交报修</button>
            </div>
        </form>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 图片上传预览
    document.getElementById('imageUpload').addEventListener('change', function() {
        var files = this.files;
        if (files.length > 5) {
            showToast('最多只能上传5张图片', 'warning');
        }
        
        previewImage(this, 'imagePreview', 5);
    });
    
    // 提交表单
    document.getElementById('submitBtn').addEventListener('click', function() {
        var title = document.getElementById('title').value;
        var location = document.getElementById('location').value;
        var description = document.getElementById('description').value;
        var imageUpload = document.getElementById('imageUpload');
        
        // 简单验证
        if (!title) {
            showToast('请输入报修标题', 'warning');
            return;
        }
        
        if (!location) {
            showToast('请输入报修位置', 'warning');
            return;
        }
        
        if (!description) {
            showToast('请输入详细描述', 'warning');
            return;
        }
        
        // 如果有图片，先上传图片
        if (imageUpload.files.length > 0) {
            // 按钮状态
            var submitBtn = this;
            submitBtn.disabled = true;
            submitBtn.textContent = '处理中...';
            
            uploadImages(imageUpload, function(uploaded) {
                // 处理上传结果
                if (uploaded.length > 0) {
                    document.getElementById('images_json').value = JSON.stringify(uploaded);
                }
                
                // 提交表单数据
                submitFormData();
                
                // 恢复按钮状态
                submitBtn.disabled = false;
                submitBtn.textContent = '提交报修';
            });
        } else {
            // 直接提交表单数据
            submitFormData();
        }
    });
    
    // 提交表单数据
    function submitFormData() {
        var formData = getFormData('repairForm');
        
        ajax('?do=bxiu&act=save', formData, function(response) {
            if (response.status === 'success') {
                showToast(response.msg, 'success');
                
                // 清空表单
                document.getElementById('repairForm').reset();
                document.getElementById('imagePreview').innerHTML = '';
                
                // 3秒后跳转到列表页
                setTimeout(function() {
                    window.location.href = '?do=list';
                }, 3000);
            } else {
                showToast(response.msg, 'error');
            }
        });
    }
});
</script>
